package com.aidong.activity.dao;

import java.util.List;
import java.util.Map;

import com.aidong.activity.entity.Home;
import com.aidong.activity.entity.Member;
import com.aidong.activity.entity.MstCampaign;

/**
 * 活动接口
 * @author java
 * @version 1.0    
 *  2015.6.25
 */
public interface MstCampaignDao {
	
	/**
	 * 查找票务和赛事
	 * @param map
	 * @return
	 */
	public List<Map<String, Object>> getMstMatch(Map<String, Object> map);
	
	/**
	 * 查找未下架的活动
	 * @param map
	 * @return
	 */
	public List<Map<String, Object>> getMstCampaign(Map<String, Object> map);
	
	/**
	 * 查找已结束的活动
	 * @return
	 */
	public List<Map<String, Object>> getEndCampaign(Map<String, Object> map);
	
	/**
	 * 当前日期距离活动状态天数
	 * @param map
	 * @return
	 */
	public int getMstCampaignDay(String dateTime);
	
	/**
	 * 活动详情
	 * @param campaignId 活动ID
	 * @return
	 */
	public List<Map<String, Object>> getMstCampaignDetail(int campaignId);
	
	/**
	 * 添加活动报名
	 * @param campaign
	 */
	public void addActivityReg(MstCampaign campaign);
	
	/**
	 * 判断该手机号码是否已注册
	 * @param phoneNo
	 * @return
	 */
	public int getIfRegister(String phoneNo);
	
	/**
	 * 判断是否已经报名
	 * @param map
	 * @return
	 */
	public List<Map<String, Object>> getIfAlreadyReg(Map<String, Object> map);
	
	/**
	 * 如果报名之前未注册，先注册
	 * @param map
	 * @return
	 */
	public int addMemberReg(Map<String, Object> map);
	
	/**
	 * 根据手机号码获得爱动号
	 * @param phone
	 * @return
	 */
	public int getIdongIdByPhone(String phone);
	
	/**
	 * 如果报名之前已注册，查找已注册信息
	 * @param idongId
	 * @return
	 */
	public Map<String, Object> getMemberReg(int idongId);
	
	/**
	 * 活动照片回顾
	 * @param campaignId
	 * @return
	 */
	public List<Map<String, Object>> getCampaignReview(int campaignId);
	
	/**
	 * 获得活动报名结束时间、报名人数、可参加人数
	 * @param campaignId
	 * @return
	 */
	public Map<String, Object> getCampaignSignMsg(int campaignId);
	
	/**
	 * 活动报名会员列表
	 * @param campaignId
	 * @return
	 */
	public List<Member> getAlreadySignedPerson(int campaignId);
	
	/**
	 * 是否已经点赞
	 * @param map
	 */
	public int getIfCampaignPrasie(Map<String, Object> map);
	
	/**
	 * 添加点赞记录
	 * @param map
	 */
	public void addMstCampaignPrasie(Map<String, Object> map);
	
	/**
	 * 修改点赞人数
	 * @param campaignId
	 */
	public void editMstCampaignCount(int campaignId);
	
	/**
	 * 是否已关注对方爱动号
	 * @param map
	 */
	public int getIfAttention(Map<String, Object> map);
	
	/**
	 * 内容推荐
	 * @return
	 */
	public List<Home> getCampaignBanner(Map<String, Object> map);
	
	/**
	 * 修改活动报名人数
	 * @param campaignId
	 */
	public void editCampaignSignUpCount(int campaignId);
	
	/**
	 * 修改报名状态
	 * @param map
	 */
	public void editCampaignSignUpStatus(Map<String, Object> map);
	
	/**
	 * 活动报名有效人数
	 * @param campaignId
	 * @return
	 */
	public int getCampaignValidCount(int campaignId);
	
	/**
	 * 票务已被购买的张数
	 * @param campaignId
	 * @return
	 */
	public int getHasBuyTicketCount(int campaignId);
	
	/**
	 * 活动介绍
	 * @param campaignId
	 * @return
	 */
	public Map<String, Object> getCampaignIntroduce(int campaignId);
	
	/**
	 * 活动回顾详情
	 * @param campaignId
	 * @return
	 */
	public Map<String, Object> getMstCampaignReviewDuce(int campaignId);
	
	/**
	 * 活动点赞人数
	 * @param campaignId
	 * @return
	 */
	public int editMstCampaignNess(int campaignId);
	
	/**
	 * 餐饮图片入口
	 * @return
	 */
	public Map<String, Object> getFoodEntryImage();
	
	/**
	 * 广告位信息
	 * @return
	 */
	public List<Map<String, Object>> getAdPositionIdInfo();
	
	/**
	 * 得到支付信息
	 * @param campaignId
	 * @return
	 */
	public String getPayInfo(int campaignId);
	
	/**
	 * 查询是否有未使用的电影券
	 * @return
	 */
	public int ifHasMoviceTickets(int campaignId);
	
	/**
	 * 设置电影券被该用户购买
	 * @param map
	 */
	public void setMovieTicketsUse(Map<String, Object> map);
	
	/**
	 * 获取个人可购买的电影券数
	 * @param campaignId
	 * @return
	 */
	public Map<String, Object> getMoviceBuyNum(int campaignId);
	
	/**
	 * 获取用户已购买的电影券数
	 * @param idongId
	 * @return
	 */
	public int getUserBuyMoviceCount(Map<String, Object> map);
	
	/**
	 * 判断对否可报名的存储过程
	 * @param map
	 */
	public void signPersonIsFull(Map<String, Object> map);
	
	
	/**
	 * 获取某赛事可取票区列表
	 * @param campaignId
	 * @return
	 */
	public List<Map<String, Object>> getEventAreas(int campaignId);
	
	/**
	 * 获取某赛事可取票门店某区的商圈列表
	 * @param areaId
	 * @return
	 */
	public List<Map<String, Object>> getEventAreaRegion(Map<String, Object> map);
	
	/**
	 * 获取某赛事可取票门店某区的门店列表
	 * @param areaId
	 * @return
	 */
	public List<Map<String, Object>> getEventAreaStore(Map<String, Object> map);
	
	
	public Map<String, Object> getOneCampaignInfo(int campaignId);
	
	/**
	 * 获取某门店支持取票的赛事信息
	 * @param storeId
	 * @return
	 */
	public List<Map<String, Object>> getOneStoreMatchInfo(Map<String, Object> map);
	
	/**
	 * 获取个人已购票务数-已支付、待支付、已完成
	 * @param map
	 * @return
	 */
	public int getMatchNumOnePerson(Map<String, Object> map);
	
	/**
	 * 获取已开通的城市
	 * @param map
	 * @return
	 */
	public List<Map<String, Object>> getOpenCity();
	
	/**
	 * 新版内容推荐
	 * @return
	 */
	public List<Home> getCampaignBannerNew(Map<String, Object> map);
	
	/**
	 * 根据活动ID获取该活动是否报名已满
	 */
	public MstCampaign  getFullByCampaignId(Map<String, Object> map);
	/**
	 * 根据活动ID修改活动表中报名已满字段
	 * @param map
	 * @return
	 */
	public int updateFullByCampaignId(Map<String, Object> map);
	
	
	/**
	 * 根据嘉年华总获取嘉年华总的信息
	 * @param map
	 * @return
	 */
	public MstCampaign getCarnivalByType(Map<String, Object> map);
	
	public List<Map<String,Object>> getCarnivalIfAlreadyReg(Map<String, Object> map);
	
	/**
	 * 根据地址ID获取地址信息
	 * @param addressId
	 * @return
	 */
	public Map<String,Object> getAddressDetailById(int addressId);
	
	/**
	 * 获取爱动训练营活动
	 * @return
	 */
	public List<MstCampaign> getCampaignAiDongList(int campaignType);
	/**
	 * 根据爱动号查看是否预约幸运抽奖
	 * @param idongId
	 * @return
	 */
	public int getLuckyDrawCount(int idongId);
	/**
	 * 获取该人该天共消费金额
	 * @param map
	 * @return
	 */
	public double getActuallyCount(Map<String,Object> map);
	/**
	 * 查看当前时间是否有活动
	 * @return
	 */
	public Map<String,Object> getActuallyTime();
	/*
	 * 获取配置的价格
	 */
	public double getLuckyDrawPrice();
	
	public Map<String,Object> getActuallyNextTime();
	
	public Map<String,Object> getLastLuckyDraw();
	/**
	 * 获取最近要抽奖的开始时间
	 * @return
	 */
	public List<Map<String,Object>> getLuckyDrawTime();
	/**
	 * 获取幸运抽奖人
	 * @return
	 */
	public List<Map<String,Object>> getLuckyDrawList();
	/**
	 * 判断改时间段多少人购买
	 * @return
	 */
	public int getLuckyDrawOnce();
	
	/**
	 * 人列表
	 * @return
	 */
	public List<Map<String,Object>> getLuckyDrawPersonList(Map<String,Object> map);
	/**
	 * 查询当前时间是否存在幸运抽奖活动
	 * @return
	 */
	public int getLuckyCampaignCou();
}
